package dataview;

public class InfoCibo {
	private String descrizione;
	private int calXunita;
	private Unita unitaRiferimento;
	private Valori valori;
	
	public InfoCibo(String descrizione, int calXunita, Unita unitaRiferimento, Valori valori) {
		this.descrizione = descrizione;
		if (unitaRiferimento == null) {
			unitaRiferimento = null;
			valori = new Valori();
			this.calXunita = 0;
		} else {
			this.unitaRiferimento = unitaRiferimento;
			this.valori = valori;
			this.calXunita = calXunita;
		}
	}
	
	public String getDescrizione() {
		return descrizione;
	}
	
	public int getCalXunita() {
		return calXunita;
	}
	
	public Unita getUnitaRiferimento() {
		return unitaRiferimento;
	}
	
	public Valori getValori() {
		return valori;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + calXunita;
		result = prime * result + ((descrizione == null) ? 0 : descrizione.hashCode());
		result = prime * result + ((unitaRiferimento == null) ? 0 : unitaRiferimento.hashCode());
		result = prime * result + ((valori == null) ? 0 : valori.hashCode());
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj) return true;
		if (obj == null) return false;
		if (getClass() != obj.getClass()) return false;
		InfoCibo other = (InfoCibo)obj;
		if (calXunita != other.calXunita) return false;
		if (descrizione == null) {
			if (other.descrizione != null) return false;
		} else if (!descrizione.equals(other.descrizione)) return false;
		if (unitaRiferimento == null) {
			if (other.unitaRiferimento != null) return false;
		} else if (!unitaRiferimento.equals(other.unitaRiferimento)) return false;
		if (valori == null) {
			if (other.valori != null) return false;
		} else if (!valori.equals(other.valori)) return false;
		return true;
	}
}